import java.util.Scanner;

public class demo {

    //    完全数计算
//    完全数（Perfect number），又称完美数或完备数，是一些特殊的自然数。
//它所有的真因子（即除了自身以外的约数）的和（即因子函数），恰好等于它本身。
//例如：28，它有约数1、2、4、7、14、28，除去它本身28外，其余5个数相加，1+2+4+7+14=28。
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int count = 0;//完全数
//        从2~n开始遍历
        for(int i = 2; i <= n; i++) {
            int sum = 0;//约数之和
            for(int j = 2; j * j <= i; j++) {
                if(i % j == 0) {
                    if(i/j == j) {//如果两个相同约数相成得到i  那么就算一次
                        sum = sum + j;
                    }else {
                        sum = sum + j + i/j;
                    }
                }
                if(sum > i) {//满足这条件 提前结束
                    break;
                }
            }
            if(sum+1 == i) {
                count++;
            }
        }
        System.out.println(count);
    }
//    100
//    3





    //    扑克牌大小
//    扑克牌游戏大家应该都比较熟悉了，一副牌由54张组成，
//    含3~A，2各4张，小王1张，大王1张。牌面从小到大用如下字符和字符串表示（其中，小写joker表示小王，大写JOKER表示大王）:)
//    3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
//输入两手牌，两手牌之间用“-”连接，每手牌的每张牌以空格分隔，“-”两边没有空格，如：4 4 4 4-joker JOKER
//请比较两手牌大小，输出较大的牌，如果不存在比较关系则输出ERROR
//扑克牌游戏大家应该都比较熟悉了，一副牌由54张组成，含3~A，2各4张，小王1张，大王1张。牌面从小到大用如下字符和字符串表示（其中，小写joker表示小王，大写JOKER表示大王）:)
//3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
//输入两手牌，两手牌之间用“-”连接，每手牌的每张牌以空格分隔，“-”两边没有空格，如：4 4 4 4-joker JOKER
//请比较两手牌大小，输出较大的牌，如果不存在比较关系则输出ERROR
//答案提示：
//（1）除了炸弹和对王之外，其他必须同类型比较。
//（2）输入已经保证合法性，不用检查输入是否是合法的牌。
//（3）输入的顺子已经经过从小到大排序，因此不用再排序了.
    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();//输入的字符串
        String[] p = str.split("-");//通过-分割为两个字符串
        String[] p1 = p[0].split(" ");//在通过空格继续分割
        String[] p2 = p[1].split(" ");
        String test = "34567891JQKA";//保存各牌数据  10用1来代替

//        王炸直接输出
        if (p[0].equals("joker JOKER") || p[1].equals("joker JOKER")) {
            System.out.println("joker JOKER");
//            长度相同 可以直接比较第一位
        }else if (p1.length == p2.length) {
//                                  这里用subString是从下标0开始取1位   保证10 可以进行比较
            if (test.indexOf(p1[0].substring(0,1)) > test.indexOf(p2[0].substring(0,1))) {
                System.out.println(p[0]);
            }else {
                System.out.println(p[1]);
            }
//            长度不同时 除了炸弹 就是 王炸  因为王炸上面闭过了 所以就剩下炸弹和其他牌的情况
        }else if (p1.length == 4) {
            System.out.println(p[0]);
        }else if (p2.length == 4) {
            System.out.println(p[1]);
        }else {
//            其他情况输出错误
            System.out.println("ERROR");
        }
    }
}
